\section{网络连接查询netstat}

\label{nettool:netstat}

\begin{verbatim}
netstat [类型] [选项]
\end{verbatim}
默认类型为打印所有Open socket信息，类型-r表示路由表信息，-i表示网络接口信息，-g表示多播组信息，-s表示各协议统计信息。

对于Open socket信息，重要选项为：
\begin{itemize}
    \item 
a 显示所有的socket，而不仅仅是监听套接字(默认为l)
    \item 
t TCP only
    \item 
u UDP only
    \item 
n 不将数字解析成名字，使用该选项能加速程序输出
    \item 
p 显示相关进程的PID和名字
\end{itemize}


\section{Tcpdump用法举例}

\begin{verbatim}
tcpdump -i eth0 host 192.168.130.10 'tcp' -w file.pcap
tcpdump -r file.pcap >> file.txt
\end{verbatim}
注意，待写入的文件必须以pcap为后缀，否则tcpdump不能运行，报权限错误。pcap文件也可以用wireshark打开。

一些常用选项为：
\begin{itemize}
    \item 
        c选项指定抓包数量
    \item 
        s选项指定抓包长度(从二层开始)
\end{itemize}

注意如果s选项指定的长度超过帧长，则只抓帧长。所谓帧长，如果是在Linux下运行pcap程序，是不包括L2 FCS的（以太网尾部CRC），这和Smartbit等测试仪表不一样。sar也将FCS加入到计数器中，虽然Linux下的pcap抓不到FCS。



 To print the start and end packets (the SYN and FIN packets) of each TCP conversation that involves a non-local host.
\begin{verbatim}
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'
\end{verbatim}



\section{Ping高级用法}
Unix上ping工具的常用选项：
\begin{itemize}
    \item 
        -c 控制发送的包数
    \item 
        -i 控制发包间隔，单位为秒，非root用户最少可设0.2秒
    \item 
        -s 控制包长
    \item 
        -t 控制ttl
\end{itemize}


\section{Wireshark用法举例}
Wireshark会判断操作系统是否能抓到FCS，但声称判断未必准确，可以手工告诉Wireshark一定有FCS。
有个很实用的功能是对一个包右键选择follow tcp connection，能够筛选出该包所属连接的所有包。


\section{网络流量测量}
vnstat, sar, slurm, ifstat, system-monitor等工具可查看网卡总流量。iptraf，iftop可查看连接的流量。

\subsection{简单测量}
最原始的办法,是连续两次使用date;ifconfig命令,计算一定时间间隔内的数据量。
也可以通过查看/proc/net/dev获取数据量。
在Gnome3下,可以使用一个叫做netspeed的gnome shell插件。

\subsection{vnstat工具}
\begin{shellcmd}
#-ru 0 使其以byte为单位,1使其以bit为单位.
vnstat -l -ru 0 #持续采样 
vnstat -tr #统计网速，5秒内的采样平均计算所得。
\end{shellcmd}

\subsection{iftop工具}
显示带宽使用情况。3列显示，分别表示过去2s，10s，40s内的统计带宽。
\begin{verbatim}
iftop -h | [-nNpbBP] [-i interface] [-f filter code] [-F net/mask]
\end{verbatim}
例如：
\begin{shellcmd}
#-B表示以byte而非bit为单位,-P显示端口号
sudo iftop -B -P 
\end{shellcmd}
工具默认自动将IP地址转换为主机名，会产生一定的DNS流量，扰乱测试。为讲其关闭，可使用-n命令。

\subsection{sar工具}
也可以使用sar工具.在Redhat/Fedora下,sar工具位于sysstat软件包中.
\begin{shellcmd}
#最后的数字表示刷新时间间隔,单位为秒
sar -n DEV 3 
\end{shellcmd}

经我验证，sar统计的字节数为以太网层，包括其头部和尾部(虽然Linux抓不到帧尾的FCS)，不包括前导码和帧间隔。

\subsection{ifstat工具}
\begin{shellcmd}
ifstat -a
\end{shellcmd}

\subsection{ntop工具}
Ntop是一种监控网络流量工具，用ntop显示网络的使用情况比其他一些网络管理软件更加直观、详细。Ntop甚至可以列出每个节点计算机的网络带宽利用率。它是一个灵活的、功能齐全的，用来监控和解决局域网问题的工具；尤其当ntop与nprobe配合使用，其功能更加显著。它同时提供命令行输入和web页面，可应用于嵌入式web服务。跟 top 监视系统活动状况相似，ntop 是一个用来实时监视网络使用情况的工具。由于 ntop 具有 Web 界面模式，因此无论是配置还是使用都很容易在短时间之内快速上手。

\subsection{iptraf工具}
Interactive Colorful IP LAN Monitor。可查看每条连接的信息。
\begin{verbatim}
iptraf -i eth0
\end{verbatim}


\subsection{slurm工具}
 Simple Linux Utility for Resource Management，查看网络流量的一个工具。
 \begin{verbatim}
 slurm -i eth0
 \end{verbatim}

彩色curse节目，有部分文字是白色，在浅色背景下看不清楚。




\subsection{SmartBits仪表使用}
其测试客户端称为SmartWindow, 只能安装在Windows XP系统下，驱动程序选择7.x版本。需要输入序列号。

打开SmartWindow后，选择connection set up,设置连接地址，即仪表的IP地址。其默认IP地址为192.168.1.121。然后执行连接操作，可以看到仪表正面面板图。在面板图上选择连线了的子板，执行reserve操作，相当于选中。然后可以右键进行各种测试了。

发送数据时，需要确保对方的IP，MAC，PORT等设置正确。

统计速率，可用的子工具有smart counter，或右键某module选择display counter。统计的字节数为L2层，包括以太网头和尾（FCS），不包括帧前导和帧间隔，确定。

抓包:SmartWindow界面，右击某module模块选择capture。

每次更改设置时，smartbit可能会停止发包。可以查看光电转换模块的指示等判断smartbits是否仍然在发包。如果没有，需要重启smartbits。

用完后，smartbit和光电转换模块都需关闭电源，以防损害设备。

Smartbit统计速率时，帧长包括L2的FCS的（以太网尾部CRC）。













